//  Copyright (c) 2008  Yoong-ki Ahn & Youngjin Kim < mexif@googlegroups.com>
//  See the enclosed file COPYING for license information (MIT Licence).
//  If you did not receive this file,
//  see http://www.opensource.org/licenses/mit-license.php.

package mexif.TagDB;

public class ExifMetaTagDB_GPS extends ExifMetaTagDB {
	final public int _MEXIF_TAGID_GPS_Count                   = 31;

	final public int MEXIF_TAGID_GPS_GPSVersionID             = 0;
	final public int MEXIF_TAGID_GPS_GPSLatitudeRef           = 1;
	final public int MEXIF_TAGID_GPS_GPSLatitude              = 2;
	final public int MEXIF_TAGID_GPS_GPSLongitudeRef          = 3;
	final public int MEXIF_TAGID_GPS_GPSLongitude             = 4;
	final public int MEXIF_TAGID_GPS_GPSAltitudeRef           = 5;
	final public int MEXIF_TAGID_GPS_GPSAltitude              = 6;
	final public int MEXIF_TAGID_GPS_GPSTimeStamp             = 7;
	final public int MEXIF_TAGID_GPS_GPSSatellites            = 8;
	final public int MEXIF_TAGID_GPS_GPSStatus                = 9;
	final public int MEXIF_TAGID_GPS_GPSMeasureMode           = 10;
	final public int MEXIF_TAGID_GPS_GPSDOP                   = 11;
	final public int MEXIF_TAGID_GPS_GPSSpeedRef              = 12;
	final public int MEXIF_TAGID_GPS_GPSSpeed                 = 13;
	final public int MEXIF_TAGID_GPS_GPSTrackRef              = 14;
	final public int MEXIF_TAGID_GPS_GPSTrack                 = 15;
	final public int MEXIF_TAGID_GPS_GPSImgDirectionRef       = 16;
	final public int MEXIF_TAGID_GPS_GPSImgDirection          = 17;
	final public int MEXIF_TAGID_GPS_GPSMapDatum              = 18;
	final public int MEXIF_TAGID_GPS_GPSDestLatitudeRef       = 19;
	final public int MEXIF_TAGID_GPS_GPSDestLatitude          = 20;
	final public int MEXIF_TAGID_GPS_GPSDestLongitudeRef      = 21;
	final public int MEXIF_TAGID_GPS_GPSDestLongitude         = 22;
	final public int MEXIF_TAGID_GPS_GPSDestBearingRef        = 23;
	final public int MEXIF_TAGID_GPS_GPSDestBearing           = 24;
	final public int MEXIF_TAGID_GPS_GPSDestDistanceRef       = 25;
	final public int MEXIF_TAGID_GPS_GPSDestDistance          = 26;
	final public int MEXIF_TAGID_GPS_GPSProcessingMethod      = 27;
	final public int MEXIF_TAGID_GPS_GPSAreaInformation       = 28;
	final public int MEXIF_TAGID_GPS_GPSDateStamp             = 29;
	final public int MEXIF_TAGID_GPS_GPSDifferential          = 30;

	public ExifMetaTagDB_GPS() {
		mDB = new ExifTagDB[_MEXIF_TAGID_GPS_Count];
		
		mDB[0] = new ExifTagDB(0, "GPSVersionID", "GPS tag version" ); // BYTE 4
		mDB[1] = new ExifTagDB(1, "GPSLatitudeRef", "North or South Latitude" ); // ASCII 2
		mDB[2] = new ExifTagDB(2, "GPSLatitude", "Latitude" ); // RATIONAL 3
		mDB[3] = new ExifTagDB(3, "GPSLongitudeRef", "East or West Longitude" ); // ASCII 2
		mDB[4] = new ExifTagDB(4, "GPSLongitude", "Longitude" ); // RATIONAL 3
		mDB[5] = new ExifTagDB(5, "GPSAltitudeRef", "Altitude reference" ); // BYTE 1
		mDB[6] = new ExifTagDB(6, "GPSAltitude", "Altitude" ); // RATIONAL 1
		mDB[7] = new ExifTagDB(7, "GPSTimeStamp", "GPS time (atomic clock)" ); // RATIONAL 3
		mDB[8] = new ExifTagDB(8, "GPSSatellites", "GPS satellites used for measurement" ); // ASCII Any
		mDB[9] = new ExifTagDB(9, "GPSStatus", "GPS receiver status" ); // ASCII 2
		mDB[10] = new ExifTagDB(10, "GPSMeasureMode", "GPS measurement mode" ); // ASCII 2
		mDB[11] = new ExifTagDB(11, "GPSDOP", "Measurement precision" ); // RATIONAL 1
		mDB[12] = new ExifTagDB(12, "GPSSpeedRef", "Speed unit" ); // ASCII 2
		mDB[13] = new ExifTagDB(13, "GPSSpeed", "Speed of GPS receiver" ); // RATIONAL 1
		mDB[14] = new ExifTagDB(14, "GPSTrackRef", "Reference for direction of movement" ); // ASCII 2
		mDB[15] = new ExifTagDB(15, "GPSTrack", "Direction of movement" ); // RATIONAL 1
		mDB[16] = new ExifTagDB(16, "GPSImgDirectionRef", "Reference for direction of image" ); // ASCII 2
		mDB[17] = new ExifTagDB(17, "GPSImgDirection", "Direction of image" ); // RATIONAL 1
		mDB[18] = new ExifTagDB(18, "GPSMapDatum", "Geodetic survey data used" ); // ASCII Any
		mDB[19] = new ExifTagDB(19, "GPSDestLatitudeRef", "Reference for latitude of destination" ); // ASCII 2
		mDB[20] = new ExifTagDB(20, "GPSDestLatitude", "Latitude of destination" ); // RATIONAL 3
		mDB[21] = new ExifTagDB(21, "GPSDestLongitudeRef", "Reference for longitude of destination" ); // ASCII 2
		mDB[22] = new ExifTagDB(22, "GPSDestLongitude", "Longitude of destination" ); // RATIONAL 3
		mDB[23] = new ExifTagDB(23, "GPSDestBearingRef", "Reference for bearing of destination" ); // ASCII 2
		mDB[24] = new ExifTagDB(24, "GPSDestBearing", "Bearing of destination" ); // RATIONAL 1
		mDB[25] = new ExifTagDB(25, "GPSDestDistanceRef", "Reference for distance to destination" ); // ASCII 2
		mDB[26] = new ExifTagDB(26, "GPSDestDistance", "Distance to destination" ); // RATIONAL 1
		mDB[27] = new ExifTagDB(27, "GPSProcessingMethod", "Name of GPS processing method" ); // UNDEFINED Any
		mDB[28] = new ExifTagDB(28, "GPSAreaInformation", "Name of GPS area" ); // UNDEFINED Any
		mDB[29] = new ExifTagDB(29, "GPSDateStamp", "GPS date" ); // ASCII 11
		mDB[30] = new ExifTagDB(30, "GPSDifferential", "GPS differential correction" ); // SHORT 1
	}
	@Override
	public ExifTagDB searchDB(int tag) {
	    switch( tag )
	    {
	    case MEXIF_TAGID_GPS_GPSVersionID             : return mDB[0];
	    case MEXIF_TAGID_GPS_GPSLatitudeRef           : return mDB[1];
	    case MEXIF_TAGID_GPS_GPSLatitude              : return mDB[2];
	    case MEXIF_TAGID_GPS_GPSLongitudeRef          : return mDB[3];
	    case MEXIF_TAGID_GPS_GPSLongitude             : return mDB[4];
	    case MEXIF_TAGID_GPS_GPSAltitudeRef           : return mDB[5];
	    case MEXIF_TAGID_GPS_GPSAltitude              : return mDB[6];
	    case MEXIF_TAGID_GPS_GPSTimeStamp             : return mDB[7];
	    case MEXIF_TAGID_GPS_GPSSatellites            : return mDB[8];
	    case MEXIF_TAGID_GPS_GPSStatus                : return mDB[9];
	    case MEXIF_TAGID_GPS_GPSMeasureMode           : return mDB[10];
	    case MEXIF_TAGID_GPS_GPSDOP                   : return mDB[11];
	    case MEXIF_TAGID_GPS_GPSSpeedRef              : return mDB[12];
	    case MEXIF_TAGID_GPS_GPSSpeed                 : return mDB[13];
	    case MEXIF_TAGID_GPS_GPSTrackRef              : return mDB[14];
	    case MEXIF_TAGID_GPS_GPSTrack                 : return mDB[15];
	    case MEXIF_TAGID_GPS_GPSImgDirectionRef       : return mDB[16];
	    case MEXIF_TAGID_GPS_GPSImgDirection          : return mDB[17];
	    case MEXIF_TAGID_GPS_GPSMapDatum              : return mDB[18];
	    case MEXIF_TAGID_GPS_GPSDestLatitudeRef       : return mDB[19];
	    case MEXIF_TAGID_GPS_GPSDestLatitude          : return mDB[20];
	    case MEXIF_TAGID_GPS_GPSDestLongitudeRef      : return mDB[21];
	    case MEXIF_TAGID_GPS_GPSDestLongitude         : return mDB[22];
	    case MEXIF_TAGID_GPS_GPSDestBearingRef        : return mDB[23];
	    case MEXIF_TAGID_GPS_GPSDestBearing           : return mDB[24];
	    case MEXIF_TAGID_GPS_GPSDestDistanceRef       : return mDB[25];
	    case MEXIF_TAGID_GPS_GPSDestDistance          : return mDB[26];
	    case MEXIF_TAGID_GPS_GPSProcessingMethod      : return mDB[27];
	    case MEXIF_TAGID_GPS_GPSAreaInformation       : return mDB[28];
	    case MEXIF_TAGID_GPS_GPSDateStamp             : return mDB[29];
	    case MEXIF_TAGID_GPS_GPSDifferential          : return mDB[30];
	    }
		return null;
	}

}
